約 4,513,267 件
https://w.atwiki.jp/ff4ta988/pages/50.html
PSPレア狩り情報 PSP版ではエンカウントテーブルとイベントテーブルが別に存在しており エンカウントテーブルはアプリ版やWii版と同じ歩数乱数 イベントテーブルはPSPのシステム乱数を利用してる模様です ソフトリセットをすると歩数のみをリセット出来るので 短時間でも狙ったモンスターだけを狩り続ける事が出来ます PSPのシステム乱数についてはモンハン系が詳しいので参考にして下さい 以下にスレで出たエンカウントテーブルをコピペして下さい
https://w.atwiki.jp/a211issei/pages/15.html
PSPを改造する ここでは、PSPの改造法をご紹介します。方法は大きく分けて以下の2通り。どちらで進めるか選んでください。ご説明します。 ==選んでください== Chick henを利用する パンドラバッテリー&マジックメモリースティックを利用する
https://w.atwiki.jp/akatonbowiki/pages/5218.html
このページはこちらに移転しました PSPが大好きです 作詞/153スレ734 DSを投げたら傷ついた けれどまだまだ動くんだ~ DSを踏んだら変な音 けれどバリバリ動くんだ~ らら任天堂~ テラ任天堂~ PSP落としたら 傷ついた 画面に一筋 線が走る PSP踏んだら嫌な音 お願い もう一度 笑ってよ~ らら馬鹿ソニー テラ馬鹿ソニー 僕の涙を返してよ
https://w.atwiki.jp/wiki9_vipac/pages/685.html
【ジャックとゲドの】アーマードコア【就職活動】/333~/600~ 【機甲兵団】アーマードコア【Jフェニックス】/333~/666~ 【(´鍋`)】アーマードコア【(´神`)】/333~/666~ 【Armored】アーマードコア【Core】/333~/666~ 【僕らの】アーマードコア・CR-AH79【英雄】/333~/666~ 【ハイパーチェスト】アーマードコア【メガマッチョマックス】/333~/666~ 【管制室、聞こえるか!】アーマードコア【すぐに援護しろ!】/後半~ 【ズーパーズベン】アーマードコア【タイム!!】/333~/666~ 【はじめての】アーマードコア【しゆうかい】/333~/666~ 【VIP】アーマードコア【AC】/333~/666~ 【コジマ粒子】アーマードコア【クイックブースト】/333~/666~ 【FF大会】アーマードコア【そろそろ開始】/333~/666~ 【出ろぉぉぉぉっ!】アーマードコア【ァァァァッッ!!】/333~/666~ 【そろそろ】アーマードコア【FF大会ですよ】/333~/666~ 【kwkm】アーマードコア【12月14日投下】/333~/666~ 【酒と男と】アーマードコア【男と男】/333~/666~ 【ブレホ復活】アーマードコア【そんなことよりFF大会】/333~/666~ 【ACFFって】アーマードコア【すごいんだぜ】/333~/666~ 【VIP】アーマードコア【AC】/333~/666~ 【薔薇樽】アーマード・コア【GA】/333~/666~ 【必要なのは】アーマード・コア【無修正】/333~/666~ 【無修正モロ】アーマードコア【ネタバレ】/333~/666~ 【FF大会】アーマードコア【ついに決着】/333~/666~ 【第三回FF大会】アーマードコア【完全決着】/333~/666~ 【干<】アーマードコア【尻を貸そう】/333~/666~ 【インテリオル】アーマード・コア【原画の方がいい】/333~/666~ 【( ゚鍋゚ )】アーマードコア【( ゚神゚ )】 (゚佃゚ )・・・/333~/666~ 【うほっ】アーマードコア【らめぇ】/333~/666~ 【引きこもる】アーマードコア【引きこもりカドル】/333~/666~ 【】アーマードコア【】/333~/666~ アーマードココア/333~/666~ 【AC4】アーマードコア【LR】/333~/666~ 【アーマードコア】ノーマルAC!数だけは多いぜ!【armoredcore】/333~/666~ 【アーマードコア】ノーマルが今トレンド!「ARMOREDCORE」/333~/666~ 【ウホッ】アーマードコア【いい蛍光灯】/333~/666~ 【リンクスと】アーマードコア【AMIDA】/333~/666~ 【構え】アーマードコア【再来?】/333~/666~ アーマードコア~ん/333~/666~ 【レイヴン】アーマードコア【リンクス】/333~/666~ 【カノープス】アーマードコア【カノサワ】/333~/666~ 【うほっ】アーマードコアッー!【いい男】/333~/666~ フロムソフトウェアーマードコア/333~/666~
https://w.atwiki.jp/amorphophallus/pages/38.html
PSP Seminar from Assembly ps2dev.orgにあるPSPデベロップチュートリアル資料の翻訳。2006年のドキュメントなのでやや古いネタだがメモリマップ以外は基本的に同じだと思う。用語や仕様などで詳しい訳が分からなかったところもあるので随時修正する予定。 http //ps2dev.org/psp/Tutorials/PSP_Seminar_from_Assembly 訳にあたってはMFMのアーノルド氏に技術的な突っ込みに答えてもらった。 Special thanks to the technical advice of Arnold Bronson 裸のPSP TyRaNiD著 ps2dev.org August 4, 2006 このプレゼンテーションで扱われる内容 テーマは以下のとおり C言語で書くPSP PSPの内部構造 開発ツール 以下については扱わない ゲーム Piracy 海賊版 Modチップ もくじ 1. PSP Home brewの歴史PSPのリビジョン 2. PSPのハードウェアシステムコントローラ 3. PSPソフトウェアToolchain カーネルモジュール スレッドモデル インターフェイスプログラミング PSPのセキュリティ 4. デバッグデバッグツール PSP Home brewの歴史 至高の存在:PSP PSP年表 2004年12月:日本でPSPがリリースされる。FW 1.0 2005年3月:米国でリリースされる。FW 1.5 2005年4月:Nemによる最初のhomebrew“Hello World!”。FW 1.0のみ対応 2005年6月:チームPSP-DEVがFW 1.5上で動くエクスプロイトを開発(kxploit) 2005年9月:EUでPSPがリリースされる 2005年9月:LibTIFFのエクスプロイトを使ったFW 2.0用のダウングレーダー開発 2006年4月:FW 2.0以降でGTAを使ったHome brewがはじまる 2006年6月:FW 2.5と2.6のカーネルバグが発見され、ダウングレーダーを開発 ファームウェアのリビジョン リリースされたPSPファームウェアの歴史を少したどってみたい。いくつかはエクスプロイトの穴に対策したバグフィックスだ。 1.0 コード実行に若干の制限が加えられた(日本のみ) 1.5 kxploitの実行に制限はなかった(米国のみ) 1.51と1.52 とくにハックするところはない。2.0からのダウングレード可 2.0 ダウングレードでなければユーザーモードのみ(libTIFFのeLoader) 2.01 バグフィックスされたリリース。2.5か2.6にアップグレード 2.5と2.6 カーネルバグがある。カーネルモードでダウングレードが可能(GTAのeLoader) 2.7 デベロップは難しい 自作のコードを実行する どのPSPファームウェアのリビジョンでコードを実行するか 1.0と1.5 特別なEBOOT.PBPを作れば直接実行可能 2.0 libTIFFモードからeLoaderを使う 2.01+ グランドセフトオートUMDとeLoaderを使う 2.7+ 今のところデベロップの方法はない PSPハードウェア ハードウェアの仕様について PSPはいくつかの複雑なカスタムコンポーネントで構成されている MIPSシステムコントローラ(ALLEGREX) Media Engine(MIPS+VME+AVCデコーダ) メインメモリ 32Mバイト Embedded DRAM(Media Engine用)2Mバイト VRAM 2Mバイト 多用途オーディオシステム 480×272ピクセルのフルカラースクリーン液晶(およそ1.8 1) 13ボタン、十字キー、アナログスティックの入力 メモリスティックデュオ用スロット そのほかの仕様 いくつかのハードウェアは一般的な開発にはそれほど必要ではない カスタマイズされた1.7Gバイト容量の光学ドライブ(UMD) USBコントローラと802.11bワイヤレスイーサネット オーディオコーデックをコントロールするためのI2Cバス IrDAトランシーバ マルチプルUARTS(IrDA、リモートコントロール、ハードウェアのデバッグ用) 周辺コントロールのDMAコントローラ(ユーザーアプリのDMAチャンネル用を含む) 電力とバッテリのコントローラ UMDドライブのATAコントローラ ALLEGREX ALLEGREXはPSPのメインプロセッサの名前である カスタマイズされたMIPS32コア 追加された命令セット(ビット操作、ユーザーモード割り込みコントロール、CPU停止) メモリマネージメント機構(MMU)(TLBキャッシュではない) 動作クロックの変更(およそ33MHzから333MHzまで) オンボードの単精度32ビットFPU オンボードのベクタ/マトリックス演算用コプロセッサ(VFPU) ハードウェアによるデバッグユニット 16KバイトスクラッチパッドRAM(使い物にならない) オンボードプロファイラ(キャッシュのヒット率の監視、命令の実行など) 分離された命令とキャッシュ領域 ベクタプロセッサ メインCPUの3Dグラフィックの性能を補うものとしてベクタ演算用コプロセッサ(VFPU)が用意されている 128個(8バンク×16)の32ビットレジスタ 複数のレジスタをひとつの値のようにして、2×2、3×3、4×4で再設定できる 列、行、マトリクス、マトリクスの置換 1回の演算ですべてのマトリクスの乗算ができる 頻繁に使われる三角関数と平方根の演算命令 オンボードでの擬似ランダム値生成 VFPUレジスタ 画像:レジスタマップ VFPUコードの開発 VFPUはアセンブリで書かれていて、ToolchainアセンブラはVFPUのすべての命令をサポートする。 グラフィックエンジン GEはPSPコアのグラフィック機能である。 簡素化したGLのAPI風のものが基になっている 描画はメモリ中のディスプレイリストで行われる フレームバッファ、テクスチャ、ディスプレイリストのための2MバイトのVRAM メインメモリからテクスチャとディスプレイリストを引っ張り出すためのバスマスターモード VRAMの中に必要なのはフレームバッファのみ そのほかのGEの機能 多様なテクスチャフォーマット、CLUT(Color LookUp Table)モード、DXT圧縮 2Dか3Dのモードで演算 オンボード3Dのクリッピング機能 スプラインとベジエ面の演算 モーフィングとスキニング ライティングとステンシルバッファ アルファブレンドと論理演算 ディスプレイリスト 画面描画はVRAMに直接アクセスできる。適度なパフォーマンスと3D描画のためにはディスプレイリストを使うとよい。 ディスプレイリストの各エントリは32ビット幅で、8ビットのコマンド、24ビットのデータがある 24ビットのデータは整数型で表現される。ポインタか切り捨てられた浮動小数点数が入る メインリストの中にサブリストを作ることができる カスタマイズされたvertexのタイプ、異なるサイズ(8ビットか16ビット固定のポイント、32ビット浮動小数点数)を明示的に利用できる それぞれのvertexのタイプに座標、色、ノーマルか太いかを含めることができる vertexはリストに直接明示するかインデックスをつけることができる 浮動小数点は24ビットに変換されるときその精度を失う ディスプレイリスト ディスプレイリストはGEへの転送にDMAを用いるが、これはリストを作るときに重要な分岐を得る。 リストは"Stall"アドレスで作られているときに転送できる リストはキャッシュされていないメモリ領域に書かれるか、あるいはリストを使う前にキャッシュデータが書き戻される必要がある リストはFINISHコマンドで終了されなければいけない PSPメモリマップ PSPのメインプロセッサがMMU(メモリマネジメントユニット)を操作していないとき、メモリセグメンテーションの機能がある カーネルモードとユーザーモードの仕様上、ユーザーアプリケーションがカーネルメモリに変更を加えることは防止される メインメモリの32Mバイトを分割し、4Mバイトのカーネル、4Mバイトの一時メモリ、24Mバイトのユーザスペースに割り当てている 4Mバイトの一時メモリはシステムコールのみで使用される(FW 1.0の場合はいつでも使える)。 デバイスはメモリスペースにマップされる 仮想メモリシステムはない。カーネル権限を持っていればすべてのメモリエリアにアクセス可能 PSPメモリマップ いくつかのキーになるアドレスはソースコード中で見かけるかもしれない 先頭アドレス サイズ 解説 0x00010000 16K スクラッチパッド 0x04000000 2M VRAM 0x44000000 2M VRAM (キャッシュされない) 0x08800000 24M メインRAM 0x48800000 24M メインRAM (キャッシュされない) 0x88000000 4M カーネルRAM PSPソフトウェア コンパイラ PSPコンパイラはPS2開発ツールにおける経験を継承する形で開発された。 GCC 4.0.2をベースにしている CとC++の開発環境がある VFPUを含むALLEGREXの命令セットのサポート 標準libcとstdc++関数(stdioやiostreamなど)をサポートしたNewlibのポート UNIXライクなシステム用として設計されており、Windows上で使うためにはCygwinかMingWが必要(DevkitPRO) PSPDSK フリーのソフトウェアデベロップメントキットはPSPライブラリへのアクセスを提供する。多くのライブラリとツールを使って簡単に開発できる ユーザーとカーネルのライブラリはヘッダをインポートする リバースエンジニアリングされたlibGUとlibGUM シンプルなPCMオーディオライブラリ デバッグをサポートするためのライブラリとユーテリティ関数 カスタムエクスポートテーブルを作るためのツール。ELFファイルのポストプロセスと実行形式をPRXにするためのコンバータ カスタムEBOOT.PBPのための圧縮・解凍ツール PSPとSDKを使うための60以上のサンプルコード そのほかの開発環境 今のところCとC++はPSPソフトウェア開発の主な言語である。これでソースコードを書くことに制限はない。 そのほかのオプション: LUA(LUAPlayer)- PSPのためにポートされたLUA。分かりやすいインターフェイスとライブラリ Python - PSPのためにポートされたPythonと拡張された部分。 Flash - FW 2.7以降のPSPで稼動する機能限定版フラッシュプレイヤー カーネルモジュール PSPカーネルは多くのモジュールで構成されている。モノリシックカーネルではない。ユーザーアプリケーションはよく出来たモジュールである。 モジュールはいつでもロードでき実行できる モジュールをロード後にロケーションの修正かあるいはリロケートができる ほかのモジュールから関数のエクスポートとインポートができる カーネルには、ほかのOSにあるようなプロセスという概念はない 実行形式のファイル PSPはELF形式のモジュールをベースにしている カーネルはネイティブコードで書かれた3つのタイプのファイルを実行できる ELF - ベーシックELF形式。ハードコードされたアドレスにリンクされる(一般的には0x8900000) PRX - カスタマイズされたELF形式。メモリ中のどこにでもリロケートできる ~PSP - 暗号化されたELFかPRX PSPSDKはELFとPRXを生成できるが暗号化された~PSPは生成できない。 モジュールの情報を得る モジュールを正しくロードし、また実行を追跡するためには、モジュール情報のセクションが含まれていなければならない モジュール情報は以下の内容から成る: モジュール名 モジュールの属性。カーネルモジュールなど 関数テーブル バージョン PSPSDKは十分役に立つ。ただソースコード中にPSP_MODULE_INFOと明記すればよい。 インポートとエクスポートのライブラリ カーネルモジュールを正しく使えるようにするために、ユーザーモードアプリケーションへライブラリセットをエクスポートできる インポート関数はファイルに断片化されている。これはSDKが提供する手段である。 ユーザーからカーネルへの遷移はシステムコールゲートウェイを経由する ユーザーからユーザーへのコールは直接ジャンプすればよい カーネルライブラリのために、関数名の先頭32ビットがSHA1でハッシュされており、NIDで認証されている かつて多くの問題を生んだ経緯があって、ユーザーライブラリからカーネルモジュールへはリンクできないようになっている エクスポートファイルを使って自分のコードからエクスポート関数が呼べるなら、通常それは必要ない モジュールのロード モジュールのロードと実行は理論的には非常にシンプルだが、注意すべき点もいくつかある。 ユーザーモードでモジュールをロードできる場所には厳密な制限がある カーネルモードでライブラリにリンクしようとするのにはいくつか制限がある カーネルはELF形式のモジュールはロードできるが、プレーンテキストのPRXカーネルモジュールはロードできない。SDKにはこれらの制限事項へのパッチが用意されている カーネルのリセット カーネルはモジュールのための最適なリソース管理をしないので、PSPをクリーンな状態にするためにカーネルをリセットする 通常2通りの手順がある: 1 sceKernelLoadExec - カーネルをリブートして新しく実行する 2 sceKernelExitGame - カーネルをリブートしてXMBのメニューに戻る システムメモリマネージャ おそらくこれがカーネルの最重要点である。リブート後に即ロードされる。 以下のような感じだ: PSPのメモリアロケートを管理する メインメモリのセグメントを3つのパーテーションに分割する(カーネル/Media Engine/ユーザエリア) リソース管理(UIDテーブル) システムイベントハンドラ デバッグ機能の実装 リソース管理 PSPのカーネルはシステムの状態を示すさまざまな情報を保持しており、それらは一貫したUIDテーブルで管理されている。 UIDテーブルはツリー階層構造を保持している どのUIDにも名前が割り当てられており、名前は一意でなくてもよい どのカーネルモジュールもそれぞれのUIDタイプを明記できる どのエントリもUIDタイプの情報が入ったコントロールブロックを保持している カーネルは特定のタスクを実行するUIDをコールできる UIDの数値はランダムなものではなくエンコードされたアドレスである void *cntladdr = 0x88000000 + ((uid 5) ˜ 3) ; スレッドの概要 PSPのスレッドモデルはかなりシンプルである。PS2で使われていたIOPカーネルのものに似ている。 スレッドは互いに強調する スレッドの優先度はスケジューリングにより、数値の低いほうが優先度が高い 少量のスレッドローカルストレージ(TLS)。CPUのK0レジスタを参照する VFPUを使うためにはスレッドを作成し、PSP_THREAD_ATTR_VFPU属性を設定しなければならない スレッドの作成 スレッドは実行の前にまず作成されなければならない。スレッドが一度作成されたら、実行できるようにUIDが与えられる。 スレッドの状態 画像:簡単な状態遷移のダイアグラム 同期プリミティブ PSPのカーネルはスレッドの同期とコントロールの手段をいくつか提供する。すべての待機関数はオプションでタイムアウトが使える。 排他制御セマフォ 割り込みコントロール メッセージングイベントフラグ メッセージボックスとパイプ コールバック 同期メモリプール変数のプール 固定値のプール タイマーアラーム 仮想タイマー 排他制御(mutex) セマフォは同期されたカウンタである。PSPにはmutexタイプはないが、セマフォはそれをシミュレートできる。 sceKernelCreateSemaとsceKernelDeleteSemaでそれぞれ生成と削除ができる sceKernelWaitSemaとsceKernelSignalSemaでそれぞれロックとアンロックができる 割り込みの無効化はローコストのmutexで実現できる イベントフラグ イベントフラグは2つ以上のスレッド間で“イベント”をやりとりするもの 1個のイベントフラグは32×1ビットのイベントから成る 1個かそれ以上のビットは1回にまとめて待機する 各ビットはオートかマニュアルでリセットモードにセットできる コールバック コールバックはカーネルが特別なイベントをスレッドコンテキストに送るために使われる。スレッドはコールバックの発生に応じるか、あるいは特定のwait関数を呼ばなければならない。コールバック関数の一般的な添え字はCBである。 割り込み カーネルはユーザーモードで正確に割り込みするためのコールバックメカニズムを提供する 割り込みコールバックは独立した状態のスレッドでコールされる 呼ぶと待機状態になりそうな関数はコールしてはいけない スレッドプログラミングのヒント スレッドプログラミングを簡単にするいくつかのヒント: 過密なループはさせず、可能ならどこかで待機状態にさせるのがよい スレッドの優先度は慎重に選び、割り込みのあるスレッドを優先させる waitシステムコールの戻り値を常にチェックする 待機関数を呼ぶときはデッドブロックを検知するためにタイムアウト機能を使うとよい スレッドが削除されて終了したのならリソースに問題がある ファイルIO カーネルは、有効なデバイスのファイルにアクセスするための標準的なIOサブシステムを提供する 異なるタイプのIOデバイスを作成できる ファイルIOデバイスはプリフィクス(接頭辞)のついたデバイス名でアクセスできる デバイスの別名を設定できる ブロックデバイスはsceIoAssignを使ってファイルシステムデバイスにマウントできる POSIXに似たシステムコール(例:sceIoOpenでファイルオープン、sceIoWriteで書き込みなど) ファイルIOデバイスのプリフィクスは2つの部分から成る デバイス名 オプションでファイルシステムユニットの番号 たとえばこんな感じで: ms0 メモリスティックファイルシステム host0 ホストファイルシステム (PSPLinkエクステンション) flash0 フラッシュファイルシステム irda0 IrDAトランシーバのキャラクタドライバ tty0 テキスト端末キャラクタドライバ グラフィックライブラリ VRAMにピクセルを直接描くような簡単な描画のためのライブラリ フレームバッファに16ビット(565, 5551, 4444)か32ビットカラーを設定できる sceDisplaySetFrameBufでフレームバッファを設定できる sceDisplayWaitVblankStartは現在のスレッドを次のvblank割り込みまで待機状態にし、同期を有効にしたりほかのスレッドが実行されるのを可能にする グラフィックライブラリ libGUはPSPのハードウェアアクセラレータによる描画の主要な開発手段である。 これはリバースエンジニアリングされたオフィシャルライブラリをベースにしている。 libGUはGraphic Engineとディスプレイハードウェアを回避するためのラッパーの役目をする 自動的にディスプレイリストを管理しオンラインとオフラインのリストを作成できる フレームバッファとディスプレイの切り替えを設定できる libGUMはlibGUでマトリクス操作を直接扱うための補助ライブラリである 浮動小数点とVFPUによる演算 GLのようにマトリクスのスタックを保持する ライブラリは図形マトリクスを設定するためのユーティリティ関数を提供する。図の回転など PSPで画面描画する方法はLibGUとlibGUMだけではない。 ほかにも重要なライブラリが利用可能: PSPGLはGLスタイルのインターフェイスを持った、ハードウェアアクセラレータのためのライブラリである SDLは2Dグラフィックで有用なライブラリである ほかにもポートされた画面描画のためのライブラリがある: libPNGはPNGデコード用 libJPEGはJPEGデコード用 FreeTypeとTrueTypeFont用ライブラリもある オーディオライブラリ PSPのオーディオハードウェアにはエクスポートされたライブラリがいくつかある。Media Engineとの組み合わせによりほとんどCPUを使わずにatrac3オーディオを出力できる。 PSPSDKにはシンプルなストリーミングオーディオライブラリがある。コールバックは次のデータが要求されたときに発動する カーネルはatrac3デコーダは利用できる。atrac3のエンコーダは今のところWindowsのみで利用可能である libmadのポートとMP3と、そしてOgg/Vorbisデコードのためのlibogg/libvorbisがそれぞれ用意されている モジュールプレイバックのためのmikmodのポート。fmodのポートは商用のみしかない ジョイパッド ジョイパッドを使うのは簡単で、直接的にではなくてもデモはしやすくデバッグもしやすい すべてのデジタルボタンはビットマスクにマッピングされている アナログスティックは2つの符号なし8ビットにマッピングされている セキュリティ対策とは? PSPの開発者は非公式なコードがシステムを乗っ取るのを阻止するためにいくつかのセキュリティ対策を実装している ハードウェア暗号化エンジン 連続した認証付きブートプロセス ゲーム中のバグを緩和するための、カーネルモードとユーザモードの分離 カーネルはモジュールのタイプによって、ロードの可否とどこからロードされるかについての制限を与える 実行ファイルとブートリストをカスタム暗号化/署名するラッパのフォーマット PSPのブートプロセス 書き換えられたカーネルがフラッシュROMからロードされることは可能なのだが、開発者は一連の認証でカーネルの書き換えを阻止しようとしている カーネルは暗号化されたフラッシュROMに置かれている カーネルのブートは以下の通り:1. ブートストラップがフラッシュからステージ1のIPLを復号化する 2. ステージ1のIPLはメモリ上のステージ2ローダーを復号化する 3. ステージ2のローダーはカーネルをフラッシュからロードして復号化する ステージ2のローダーはいくつかの重要なモジュールを実行前にチェックする(FW 1.5+のみ) スクラッチからカスタムファームウェアを作るのでない限り(デベロップは)難しい スレッドの保護 スレッドには特権レベルがあり、それはカーネルモードかユーザーモードのどちらで実行できるかに関わる。これはカーネルメモリをユーザーアプリケーションから保護する役割がある。 新しいスレッドを生成するときに特権レベルを拡大することはできない スレッドプリミティブは自分を生成した親の権限を継承する 同じ特権レベルにないとスレッドの列挙やスレッドプリミティブを使うことはできない 分割されたスタックがシステムコールによって遷移されているとき、アタックやデータの漏洩を防止する すべてのカーネル関数は引数のポインタをスレッドの特権レベルでチェックする ユーザアプリケーションの実行形式をロードする 特権レベルが異なればモジュールのロードも異なる。カーネルモードではチェックが入ったりする。 モジュールがどのようにロードされるかの例: 1. 実行形式のチェック(ユーザーモード、カーネルモード、暗号化コード、非暗号化など) 2. そのモードで許可されている特定デバイスからロードされたかチェック(UMDからのロードはユーザーモードでのみ可能) 3. 実行ファイルをメモリにロード(もしくは復号化して)する 4 モジュールを正しいタイプのスレッドで実行する(例えばカーネルモジュールはカーネルモードで) 本当にセキュアなのか? セキュリティの程度はその脆弱性と同じくらいだ PSPの脆弱性の連鎖はソフトウェアにあり、唯一の保護機能はカーネルモードにアクセスできない セキュリティは曖昧になってしまっている(訳注:obscurity、ダジャレだと思う) システムを完全にコントロールするにはPSPが実行する2つのソフトウェアの欠陥が必要である1 ゲームをエクスプロイトして任意のコードを実行できる(GTAとか)。ユーザーモードコントロール。 2 カーネルエクスプロイトはすべてのシステムをコントロールできる(FW 2.5と2.6のLoadExecバグ) FW 1.0と1.5はまったくセキュリティ対策がされておらず、カーネルモードで直接ELFを実行できる。 デバッグ デバッグ CかC++でソースコードを書いているとmakeやデバッグ中にバグが這い出るのはまったく避けようがない コンシューマ機器であるがゆえに本当の意味で直接デバッグできる手法はない 例外ハンドラのデフォルトの動作はループある。そのうち電源オフになってしまう デバック時のテキストを即座に画面に出力する手段がない もちろんすべてがダメというわけじゃない。バカ高いソニーのデベロップメントキットでなくてもデバッグする方法はある。 ブラインドデバッグ 当初、唯一の選択肢は手探り状態でデバッグすることだった。アプリケーションをビルドし、PSPにコピーして実行する。 SDKにはこのプロセスを助けるためのいくつかの機能がある(FW 1.0と1.5用) オンスクリーンとSIOで文字を出力する Basic SIOベースのGDBスタブ 特定の例外ハンドラを追加する関数 スタックトレースとスレッドの列挙のための関数群 厳密には正しい開発手法ではないが、すべてのアプリケーションはメモリスティックに配置されなければならない。FW 2.00以降だけかもしれないが。 PSP Inside 開発とハッキングのためのツール。Hitmen作。 画像:PSP Insideの操作 PSPの実行状態を表示する 命令をリアルタイムで逆アセンブルできる メモリスティックかフラッシュなどから新しいモジュールをロードできる PSPLink PSPLinkはPSP上でテキスト端末環境を提供する開発ツールである 提供される機能のいくつかを示す: SIOとWiFiとUSBを経由して端末からアクセスできる USBとhost deviceからPCのファイルシステムにアクセスできる あらかじめ設定されたtty(stdinとstdout、stderr) ソフトウェアのバグを捕まえる例外ハンドラ WiFiとUSB経由のリモートでGDBスタブを使いソースレベルでデバッグできる リアルタイムでカーネルを監視(スレッド、モジュールリスト、メモリダンプとパッチ) 例外 回避できないクラッシュが発生する場合、PSPLinkかPSP Insideを使えばCPU例外を分離できる。この情報を元にクラッシュする場所を特定して修正できる。 アプリケーションをビルドするときコンパイラに-gオプションを指定しておけばデバッグ情報を有効にできる 例外の発生にはそれがなぜ起こるかの要因を示す兆候がある 例外はEPCレジスタも出力するが、これは例外が発生したアドレスを示す EPCの値をpsp-addr2lineに渡すと実行形式からソースの行番号を得られる 例外が出たら以下を試してさらにGDBを使うとよい psp−addr2line −e program.elf 0x08900340 main.c 68 リソースとリファレンス PSPプログラミングに役立ついくつかの情報源 http //www.pspdev.org/ - Toolchainとsubversionによるアーカイブ http //psp.jim.sh/pspsdk-doc - PSPSDKドキュメントのオンライン版 FreeNode IRC(irc.freenode.net)の#pspdevチャンネル - ここに来ればヘルプしてやれると思う、たぶん
https://w.atwiki.jp/sengoku3/pages/481.html
仕様 変更点 バグ 2012年2月16日発売の戦国無双3Z Specialの情報まとめ 仕様 基本的には3Zの移植のため、村雨城関連はない。 ディスクは1枚。インストールデータは114MB。 PSPの為グラフィックはやはり落ちる。以前発売された無双OROCHI 魔王再臨程度。 戦闘前のロードが20~30秒と非常に長く、インストールしてもあまり変化は無い。ダウンロード版であれば10秒程度と大幅に短縮される。 敵の数は比較的多くワラワラ感は問題ない。ただし遠方が見えにくく、敵の絶対数が減っているため、特定のHIT数や人数以上を要求される撃破効果は達成しにくくなっている。 意図的に遅くしているのか移植前より動きがもっさりしている。据え置き版と同じ感覚でプレイすると狙ったチャージが出しにくいと感じる程度。 無双秘奥義と無双奥義・皆伝のカットインはイラスト形式。アップにもなるがアクション用モデルなので口も動かず残念な顔である。 戦闘勝利後少しロードを挟んでから勝利台詞デモが入る。専用モデルを読み込んでいるためか口が動き、戦闘中より高品質なグラフィック。 歴代コスチュームをDLCからDLすれば使用可能。 PS3版のセーブデータをメモリースティックに入れて始めると、最初から全キャラ使用可能になる。 分裂する模擬演武、武田信玄の声、エディットパーツはそのまま。技能も3までで追加はない。 変更点 ガラシャと綾御前のレア武器の攻撃力がエンパイアーズと同じ数値に修正された(2人共に攻撃力38→50に)。 前田慶次の第二レア武器の属性や技能がエンパイアーズと同じものに修正された。(閃光属性→紅蓮属性 背水・無我→地撃・秘技、但し技能レベルは全て3) 服部半蔵の第二レア武器の技能がエンパイアーズと同じものになった(無我3→秘技3に)。 直江兼続の第二レア武器の技能がエンパイアーズと同じものになった(無我3→勇猛3に)。 甲斐姫の第二レア武器の技能が変更されている。(背水3→覇流3に)。 武田信玄のC5に特殊技2の能力アップ効果が発生するようになった。 阿国のコスチュームがエンパイアーズ仕様になった。 創史演武で味方を雇えなくなり捕縛も不可能になった。 腕試しの剣豪の制限時間が10分から3分に変更されている。 金翅霊足の技能「瞬転3」が「撃進3」に変更された。 上田城のMAPオブジェクトの一部が簡略化されただの壁になっている。 一般武将で声が老将のキャラがダッシュ攻撃やチャージ攻撃の際「参るかの」と言うようになった。 緊急回避ができなくなった。それに伴い足袋の技能から緊急回避の技能がなくなり、足袋のレア防具の技能も一部変更されている。ただしプレイヤーができないだけでNPCは緊急回避をしてくる。 一部、撃破効果の条件が緩くなっている。例:毛利元就の章第4話(立花救援戦)撃破効果No1 開始から30秒以内に秋月種実の撃破→2分以内に撃破撃破効果No3 コンボ数が500以上で喜入季久を撃破→コンボ数150以上で撃破 真田幸村のC1-3がきちんと7回発動する。 バグ プレイ時間のカウントがおかしい。実際のプレイ時間よりも1.5~2倍ほどの速さでカウントされており全く合わない。 本多忠勝のチャージ3本多忠勝のC3-1は前方を槍で横に薙ぐものだが、なぜか槍を縦に持ってしまっているため攻撃範囲が拳にしか存在しなくなっている。C3-2とC3-3は正常だが主力チャージであるC3-1がこのバグで機能しておらず実質弱体化。 雑賀孫市のカットイン無双秘奥義と無双奥義・皆伝はイラストカットインが入るが、雑賀孫市だけそのイラストが表示されない。 無双演武・森蘭丸の章・第五話『本能寺の変』の撃破効果撃破効果No.1の「明智軍の攻撃力が一定時間低下」とNo.2の「織田軍の攻撃力が一定時間上昇」の効果が逆転してしまっており、No.1を達成すると明智軍の攻撃力が一定時間「上昇」し、No.2を達成すると織田軍の攻撃力が一定時間「低下」する。
https://w.atwiki.jp/wiki9_vipac/pages/1141.html
https://w.atwiki.jp/wiki9_vipac/pages/74.html
https://w.atwiki.jp/wiki9_vipac/pages/853.html
https://w.atwiki.jp/wiki9_vipac/pages/1065.html